%include	'Macros.inc'
	org	100h
	jmp	Redaktor
;	������ ���������
Sector	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
	times	16	db	0
Address	dw	0
Pf	db	0 			;������� �������������� = 1 - ���� �� �����, 0 - ��.
Lname0	db	81 			;������������ ����� ����� �����
Lname	db	0			;����������� ����� ����� �����
Namefile times	81	db	0	;��� �����
Lognum	dw	0			;���������� ����� �����
Lf	dw	0			;����� ��������� ����� � �������� �� 256 ����
;-----------------------------------------------------------------------

;
;	������� ���� ���������
;	-----------------------------------------
;
Redaktor:
	call	Clear_screen		;������� ������
	Out_str	QuestionEditFile	;������ � �������������� �����
	call	Read_byte		;���� �������
	call	Send_crlf		;������� ������
	or	al,20h			;������� ������� � ������ �������
	cmp	al,'y'			;������ ������ 'y' ��� 'Y'?
	jnz	.M2			;���� ���
	Out_str	QuestionNameFile	;������ �� ����� �����
	mov	ah,0ah			;������� ����� ������
	mov	dx,Lname0		;DX <- �����-�������� ������ �����
	int	21h			;���� ������
	call	Send_crlf		;������� ������
	xor	bx,bx			;BX <- 0
	mov	bl,[Lname]		;BX <- ����� ����� �����
	mov	[Namefile+bx],byte 0	;������ �������� �����
	mov	ah,3dh			;��������
	mov	dx,Namefile		; ��������������
	mov	al,2			; �����
	int	21h			; �� ������ � ������
	jnc	.M1			;���� �������
	Out_str	ErrorOpenFile		;��������� �� ������ �������� �����
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M1:    mov	[Lognum],ax		;���������� �����. ������ �����
	xor	cx,cx			;�������� ����������� ���������
	xor	dx,dx			; ����� - 0
	mov	bx,[Lognum]		;���������
	mov	al,2			; ���������
	mov	ah,42h			; �� �����
	int	21h			; �����
	add	ax,255			;����� ������� ����� ����� � 255
	adc	dx,0			;����� ������� ����� ����� � (CF)
	mov	bx,256			;BX <- ����� �������
	div	bx			;������� (DX:AX) �� BX
	mov	[Lf],ax			;Lf <- ����� ����� � �������
	Out_str	MsgFileLength		;��������� � ����� �����
	mov	dx,[Lf]			;DX <- ����� ������ ���������
	call	Write_word_dec		;����� ������ �� �����
	call	Read_byte		;���� �������
	mov	[Pf],byte 1		;Pf <- 1
.M2:	call	Dispatcher		;����� ����������
.Exit:	mov	ax,4c00h
	int	21h			;������� � DOS
QuestionEditFile db 'Edit file: $'
QuestionNameFile db 'Enter file name: $'
ErrorOpenFile	 db 'Error open file $'
MsgFileLength	 db 'File length, in sectors of 256 bytes, is $'
%include	'Dispatch.asm'		;������������� ��������
%include	'Disp_sec.asm'		; -"-
%include	'Edit_sec.asm'		; -"-
